package com.jl15988.simpletools.system.domain.dto;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;

/**
 * 菜单DTO
 *
 * @author jl15988
 */
@Data
public class MenuDTO {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 菜单名称
     */
    @NotBlank(message = "菜单名称不能为空")
    private String name;

    /**
     * 菜单路径
     */
    private String path;

    /**
     * 组件路径
     */
    private String component;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 父级ID
     */
    private Long parentId;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 权限标识
     */
    private String permission;

    /**
     * 菜单类型（1-目录 2-菜单 3-按钮）
     */
    @NotNull(message = "菜单类型不能为空")
    private Integer type;

    /**
     * 是否显示（0-隐藏 1-显示）
     */
    private Integer visible;

    /**
     * 是否缓存（0-不缓存 1-缓存）
     */
    private Integer keepAlive;

    /**
     * 是否外链（0-否 1-是）
     */
    private Integer external;

    /**
     * 子菜单列表
     */
    private List<MenuDTO> children = new ArrayList<>();
} 